

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

public class PropDAO {
	 private final String USERNAME = "isg0910e4";
	 private final String PASSWORD = "2Wl3FW";
	 Connection conn = null;
	 
	 public PropDAO() throws ClassNotFoundException, SQLException {
		 String url = "jdbc:postgresql://banot.etsii.ull.es/isg0910e4";
		 conn = DriverManager.getConnection(url, USERNAME, PASSWORD);
	 }
	 
	 public int nuevo(propiedad np) throws SQLException {
		 int valor = 0;
		 String sql = "INSERT INTO PROPIEDADES (TIPO, DNI, DIRECCION, PRECIO) VALUES (?,?,?,?) ";
		 try {
		 PreparedStatement stm = conn.prepareStatement(sql);
		 stm.setString(1, np.getTipoprop());
		 stm.setString(2, np.getDni());
		 stm.setString(3, np.getDireccion());
		 stm.setString(4, np.getPrecio());
	 // poner en un try catch
			valor = stm.executeUpdate();
		 }
		 catch (SQLException e) {
			 System.out.println("Se ha producido un error al intentar registrarse" +e);
		 }
		 return valor; // indica el nÃºmero de registros insertados
	 }
	 
	 public int actualizar(String tipoprop, String direccion, String precio, String dni) throws SQLException {
		 String sql = "UPDATE PROPIEDADES SET TIPO = ? DIRECCION = ? PRECIO = ? WHERE DNI = ?";
		 PreparedStatement stm = conn.prepareStatement(sql);
		 stm.setString(1, tipoprop);
		 stm.setString(2, direccion);
		 stm.setString(3, precio);
		 stm.setString(4, dni);
		 int i = stm.executeUpdate();
		 return i;
	 }

	 public ArrayList<propiedad> listarTipo(propiedad np) throws SQLException {
		 String sql = null;
		 sql = "SELECT * FROM PROPIEDADES " +
		 	   " WHERE (TIPO = ?) AND (DIRECCION = ?) AND (PRECIO < ?)";

		 
		 ArrayList<propiedad> listartipos = new ArrayList<propiedad>();
		 try {

			 PreparedStatement stm = conn.prepareStatement(sql);
			 stm.setString(1, np.getTipoprop());
			 stm.setString(2, np.getDireccion());
			 stm.setString(3, np.getPrecio());
			 ResultSet rs = stm.executeQuery();

			 while (rs.next()) {
				 propiedad tp = new propiedad();
				 tp.setTipoprop(rs.getString("tipo"));
				 tp.setDireccion(rs.getString("direccion"));
				 tp.setPrecio(rs.getString("precio"));
				 listartipos.add(tp);
			 }
		 } catch (SQLException e) {
			 System.out.println("Se ha producido un error al listar las propiedades" +e);
		 }
		 return listartipos;
		 
	 }
}
